package h0720;
/**
  * @description 力扣反转字符串II
  * @author 不知名帅哥
  * @date 2024/7/20 12:35
  * @version 1.0
*/
public class ReverseStringII {
    public static void main(String[] args) {
        String s = "abcdefg";
        int k = 2;
        String result = reverseStr(s, k);
        System.out.println(result);  // 输出: "bacdfeg"
    }

    public static String reverseStr(String s, int k) {
        char[] charArray = s.toCharArray();
        int n = charArray.length;

        //以每2k个字符为一个单位进行遍历。在每个单位内：
        //找到需要反转的前k个字符的范围（从start到Math.min(start + k - 1, n - 1)）。
        //进行字符交换，反转这前k个字符。
        for (int start = 0; start < n; start += 2 * k) {
            int i = start;
            int j = Math.min(start + k - 1, n - 1);
            while (i < j) {
                char temp = charArray[i];
                charArray[i] = charArray[j];
                charArray[j] = temp;
                i++;
                j--;
            }
        }
        return new String(charArray);
    }
}
